home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / gnome-vfs-2.0 / libgnomevfs / gnome-vfs-file-info.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-05-01  |  15.6 KB  |  459 lines

  1. /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
  2. /* gnome-vfs-file-info.h - Handling of file information for the GNOME
  3.    Virtual File System.
  4.  
  5.    Copyright (C) 1999,2001 Free Software Foundation
  6.    Copyright (C) 2002 Seth Nickell
  7.  
  8.    The Gnome Library is free software; you can redistribute it and/or
  9.    modify it under the terms of the GNU Library General Public License as
  10.    published by the Free Software Foundation; either version 2 of the
  11.    License, or (at your option) any later version.
  12.  
  13.    The Gnome Library is distributed in the hope that it will be useful,
  14.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  16.    Library General Public License for more details.
  17.  
  18.    You should have received a copy of the GNU Library General Public
  19.    License along with the Gnome Library; see the file COPYING.LIB.  If not,
  20.    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  21.    Boston, MA 02111-1307, USA.
  22.  
  23.    Author: Ettore Perazzoli <ettore@comm2000.it> 
  24.            Seth Nickell <snickell@stanford.edu>
  25. */
  26.  
  27. #ifndef GNOME_VFS_FILE_INFO_H
  28. #define GNOME_VFS_FILE_INFO_H
  29.  
  30. #include <libgnomevfs/gnome-vfs-file-size.h>
  31. #include <libgnomevfs/gnome-vfs-result.h>
  32. #include <libgnomevfs/gnome-vfs-uri.h>
  33. #include <sys/stat.h>
  34. #include <sys/types.h>
  35.  
  36. G_BEGIN_DECLS
  37.  
  38. #ifdef G_OS_WIN32
  39.  
  40. /* Note that Win32 file permissions (in NTFS) are based on an ACL and
  41.  * not at all on anything like POSIX rwxrwxrwx bits. Additionally, a
  42.  * file can have a READONLY attribute. The stat() in the Microsoft C
  43.  * library only looks at the (MS-DOSish) READONLY attribute, not at
  44.  * all at the ACL. It fakes a st_mode based on the READONLY attribute
  45.  * only. If the FIXME below for GnomeVFSFilePermissions is fixed,
  46.  * these defines will become unnecessary.
  47.  */
  48.  
  49. #define S_ISUID 0
  50. #define S_ISGID 0
  51. #define S_IRGRP (S_IRUSR >> 3)
  52. #define S_IWGRP (S_IWUSR >> 3)
  53. #define S_IXGRP (S_IXUSR >> 3)
  54. #define S_IROTH (S_IRUSR >> 6)
  55. #define S_IWOTH (S_IWUSR >> 6)
  56. #define S_IXOTH (S_IXUSR >> 6)
  57.  
  58. #endif
  59.  
  60. /**
  61.  * GnomeVFSInodeNumber:
  62.  *
  63.  * Represents the i-node of a file, this is a low level data structure
  64.  * that the operating system uses to hold information about a file.
  65.  **/
  66.  
  67. typedef GnomeVFSFileSize GnomeVFSInodeNumber;
  68.  
  69. /**
  70.  * GnomeVFSFileFlags:
  71.  * @GNOME_VFS_FILE_FLAGS_NONE: no flags
  72.  * @GNOME_VFS_FILE_FLAGS_SYMLINK: whether the file is a symlink.
  73.  * @GNOME_VFS_FILE_FLAGS_LOCAL: whether the file is on a local filesystem
  74.  *
  75.  * Packed boolean bitfield representing special
  76.  * flags a #GnomeVFSFileInfo struct can have.
  77.  **/
  78. typedef enum {
  79.     GNOME_VFS_FILE_FLAGS_NONE = 0,
  80.     GNOME_VFS_FILE_FLAGS_SYMLINK = 1 << 0,
  81.     GNOME_VFS_FILE_FLAGS_LOCAL = 1 << 1
  82. } GnomeVFSFileFlags;
  83.  
  84. /**
  85.  * GnomeVFSFileType:
  86.  * @GNOME_VFS_FILE_TYPE_UNKNOWN:
  87.  * @GNOME_VFS_FILE_TYPE_REGULAR:
  88.  * @GNOME_VFS_FILE_TYPE_DIRECTORY:
  89.  * @GNOME_VFS_FILE_TYPE_FIFO:
  90.  * @GNOME_VFS_FILE_TYPE_SOCKET:
  91.  * @GNOME_VFS_FILE_TYPE_CHARACTER_DEVICE:
  92.  * @GNOME_VFS_FILE_TYPE_BLOCK_DEVICE:
  93.  * @GNOME_VFS_FILE_TYPE_SYMBOLIC_LINK:
  94.  *
  95.  * Identifies the kind of file represented by a #GnomeVFSFileInfo struct. 
  96.  **/
  97.  
  98. typedef enum {
  99.     GNOME_VFS_FILE_TYPE_UNKNOWN,
  100.     GNOME_VFS_FILE_TYPE_REGULAR,
  101.     GNOME_VFS_FILE_TYPE_DIRECTORY,
  102.     GNOME_VFS_FILE_TYPE_FIFO,
  103.     GNOME_VFS_FILE_TYPE_SOCKET,
  104.     GNOME_VFS_FILE_TYPE_CHARACTER_DEVICE,
  105.     GNOME_VFS_FILE_TYPE_BLOCK_DEVICE,
  106.     GNOME_VFS_FILE_TYPE_SYMBOLIC_LINK
  107. } GnomeVFSFileType;
  108.  
  109. /**
  110.  * GnomeVFSFileInfoFields:
  111.  * @GNOME_VFS_FILE_INFO_FIELDS_NONE: No fields are valid
  112.  * @GNOME_VFS_FILE_INFO_FIELDS_TYPE: Type field is valid
  113.  * @GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS: Permissions field is valid
  114.  * @GNOME_VFS_FILE_INFO_FIELDS_FLAGS: Flags field is valid
  115.  * @GNOME_VFS_FILE_INFO_FIELDS_DEVICE: Device field is valid
  116.  * @GNOME_VFS_FILE_INFO_FIELDS_INODE: Inode field is valid
  117.  * @GNOME_VFS_FILE_INFO_FIELDS_LINK_COUNT: Link count field is valid
  118.  * @GNOME_VFS_FILE_INFO_FIELDS_SIZE: Size field is valid
  119.  * @GNOME_VFS_FILE_INFO_FIELDS_BLOCK_COUNT: Block count field is valid
  120.  * @GNOME_VFS_FILE_INFO_FIELDS_IO_BLOCK_SIZE: I/O Block Size field is valid
  121.  * @GNOME_VFS_FILE_INFO_FIELDS_ATIME: Access time field is valid
  122.  * @GNOME_VFS_FILE_INFO_FIELDS_MTIME: Modification time field is valid
  123.  * @GNOME_VFS_FILE_INFO_FIELDS_CTIME: Creating time field is valid
  124.  * @GNOME_VFS_FILE_INFO_FIELDS_SYMLINK_NAME: Symlink name field is valid
  125.  * @GNOME_VFS_FILE_INFO_FIELDS_MIME_TYPE: Mime type field is valid
  126.  * @GNOME_VFS_FILE_INFO_FIELDS_ACCESS: Access bits of the permissions
  127.  * bitfield are valid
  128.  *
  129.  * Flags indicating what fields in a GnomeVFSFileInfo struct are valid. 
  130.  * Name is always assumed valid (how else would you have gotten a
  131.  * FileInfo struct otherwise?)
  132.  **/
  133.  
  134. typedef enum {
  135.     GNOME_VFS_FILE_INFO_FIELDS_NONE = 0,
  136.     GNOME_VFS_FILE_INFO_FIELDS_TYPE = 1 << 0,
  137.     GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS = 1 << 1,
  138.     GNOME_VFS_FILE_INFO_FIELDS_FLAGS = 1 << 2,
  139.     GNOME_VFS_FILE_INFO_FIELDS_DEVICE = 1 << 3,
  140.     GNOME_VFS_FILE_INFO_FIELDS_INODE = 1 << 4,
  141.     GNOME_VFS_FILE_INFO_FIELDS_LINK_COUNT = 1 << 5,
  142.     GNOME_VFS_FILE_INFO_FIELDS_SIZE = 1 << 6,
  143.     GNOME_VFS_FILE_INFO_FIELDS_BLOCK_COUNT = 1 << 7,
  144.     GNOME_VFS_FILE_INFO_FIELDS_IO_BLOCK_SIZE = 1 << 8,
  145.     GNOME_VFS_FILE_INFO_FIELDS_ATIME = 1 << 9,
  146.     GNOME_VFS_FILE_INFO_FIELDS_MTIME = 1 << 10,
  147.     GNOME_VFS_FILE_INFO_FIELDS_CTIME = 1 << 11,
  148.     GNOME_VFS_FILE_INFO_FIELDS_SYMLINK_NAME = 1 << 12,
  149.     GNOME_VFS_FILE_INFO_FIELDS_MIME_TYPE = 1 << 13,
  150.     GNOME_VFS_FILE_INFO_FIELDS_ACCESS = 1 << 14
  151. } GnomeVFSFileInfoFields;
  152.  
  153. /* FIXME: It's silly to use the symbolic constants for POSIX here.
  154.  * This is supposed to be a virtual file system, so it makes no
  155.  * sense to use the values of the POSIX-required constants on the
  156.  * particular machine this code is compiled on. These should all be changed
  157.  * to use numeric constants like GNOME_VFS_PERM_STICKY does now. However,
  158.  * be careful in making such a change, since some existing code might
  159.  * wrongly assume these equivalencies.
  160.  */
  161.  
  162. /**
  163.  * GnomeVFSFilePermissions:
  164.  * @GNOME_VFS_PERM_SUID: UID bit
  165.  * @GNOME_VFS_PERM_SGID: GID bit
  166.  * @GNOME_VFS_PERM_STICKY: Sticky bit.
  167.  * @GNOME_VFS_PERM_USER_READ: Owner has read permission
  168.  * @GNOME_VFS_PERM_USER_WRITE: Owner has write permission
  169.  * @GNOME_VFS_PERM_USER_EXEC: Owner has execution permission
  170.  * @GNOME_VFS_PERM_USER_ALL: Owner has all permissions
  171.  * @GNOME_VFS_PERM_GROUP_READ: Group has read permission
  172.  * @GNOME_VFS_PERM_GROUP_WRITE: Group has write permission
  173.  * @GNOME_VFS_PERM_GROUP_EXEC: Group has execution permission
  174.  * @GNOME_VFS_PERM_GROUP_ALL: Group has all permissions
  175.  * @GNOME_VFS_PERM_OTHER_READ: Others have read permission
  176.  * @GNOME_VFS_PERM_OTHER_WRITE: Others have write permission
  177.  * @GNOME_VFS_PERM_OTHER_EXEC: Others have execution permission
  178.  * @GNOME_VFS_PERM_OTHER_ALL: Others have all permissions
  179.  * @GNOME_VFS_PERM_ACCESS_READABLE:
  180.  * @GNOME_VFS_PERM_ACCESS_WRITABLE:
  181.  * @GNOME_VFS_PERM_ACCESS_EXECUTABLE:
  182.  *
  183.  * File permissions. These are the same as the Unix ones, but we wrap them
  184.  * into a nicer VFS-like enum.  
  185.  **/
  186. typedef enum {
  187.     GNOME_VFS_PERM_SUID = S_ISUID,
  188.     GNOME_VFS_PERM_SGID = S_ISGID,    
  189.     GNOME_VFS_PERM_STICKY = 01000,    /* S_ISVTX not defined on all systems */
  190.     GNOME_VFS_PERM_USER_READ = S_IRUSR,
  191.     GNOME_VFS_PERM_USER_WRITE = S_IWUSR,
  192.     GNOME_VFS_PERM_USER_EXEC = S_IXUSR,
  193.     GNOME_VFS_PERM_USER_ALL = S_IRUSR | S_IWUSR | S_IXUSR,
  194.     GNOME_VFS_PERM_GROUP_READ = S_IRGRP,
  195.     GNOME_VFS_PERM_GROUP_WRITE = S_IWGRP,
  196.     GNOME_VFS_PERM_GROUP_EXEC = S_IXGRP,
  197.     GNOME_VFS_PERM_GROUP_ALL = S_IRGRP | S_IWGRP | S_IXGRP,
  198.     GNOME_VFS_PERM_OTHER_READ = S_IROTH,
  199.     GNOME_VFS_PERM_OTHER_WRITE = S_IWOTH,
  200.     GNOME_VFS_PERM_OTHER_EXEC = S_IXOTH,
  201.     GNOME_VFS_PERM_OTHER_ALL = S_IROTH | S_IWOTH | S_IXOTH,
  202.     GNOME_VFS_PERM_ACCESS_READABLE   = 1 << 16,
  203.     GNOME_VFS_PERM_ACCESS_WRITABLE   = 1 << 17,
  204.     GNOME_VFS_PERM_ACCESS_EXECUTABLE = 1 << 18
  205. } GnomeVFSFilePermissions;
  206.  
  207.  
  208. #define GNOME_VFS_TYPE_FILE_INFO  (gnome_vfs_file_info_get_type ())
  209.  
  210. /**
  211.  * GnomeVFSFileInfo:
  212.  * 
  213.  * The GnomeVFSFileInfo structure contains information about a file.
  214.  **/
  215. typedef struct {
  216.     /* Base name of the file (no path).  */
  217.     char *name;
  218.  
  219.     /* Fields which are actually valid in this structure. */
  220.     GnomeVFSFileInfoFields valid_fields;
  221.  
  222.     /* File type (i.e. regular, directory, block device...).  */
  223.     GnomeVFSFileType type;
  224.  
  225.     /* File permissions.  */
  226.     GnomeVFSFilePermissions permissions;
  227.  
  228.     /* Flags for this file.  */
  229.     GnomeVFSFileFlags flags;
  230.  
  231.     /* These are only valid if `is_local' is TRUE (see below).  */
  232.     dev_t device;
  233.     GnomeVFSInodeNumber inode;
  234.  
  235.     /* Link count.  */
  236.     guint link_count;
  237.  
  238.     /* UID, GID.  */
  239.     guint uid;
  240.     guint gid;
  241.  
  242.     /* Size in bytes.  */
  243.     GnomeVFSFileSize size;
  244.  
  245.     /* Size measured in units of 512-byte blocks.  */
  246.     GnomeVFSFileSize block_count;
  247.  
  248.     /* Optimal buffer size for reading/writing the file.  */
  249.     guint io_block_size;
  250.  
  251.     /* Access, modification and change times.  */
  252.     time_t atime;
  253.     time_t mtime;
  254.     time_t ctime;
  255.  
  256.     /* If the file is a symlink (see `flags'), this specifies the file the
  257.            link points to.  */
  258.     char *symlink_name;
  259.  
  260.     /* MIME type.  -- ascii string */
  261.     char *mime_type;
  262.  
  263.     guint refcount;
  264.  
  265.     /* Reserved for future expansions to GnomeVFSFileInfo without having
  266.        to break ABI compatibility */
  267.     void *reserved1;
  268.     void *reserved2;
  269.     void *reserved3;
  270.     void *reserved4;
  271.     void *reserved5;
  272. } GnomeVFSFileInfo;
  273.  
  274. /**
  275.  * GnomeVFSFileInfoOptions:
  276.  * @GNOME_VFS_FILE_INFO_DEFAULT: default flags
  277.  * @GNOME_VFS_FILE_INFO_GET_MIME_TYPE: detect the MIME type
  278.  * @GNOME_VFS_FILE_INFO_FORCE_FAST_MIME_TYPE: only use fast MIME type 
  279.  * detection (extensions)
  280.  * @GNOME_VFS_FILE_INFO_FORCE_SLOW_MIME_TYPE: force slow MIME type 
  281.  * detection where available (sniffing, algorithmic detection, etc)
  282.  * @GNOME_VFS_FILE_INFO_FOLLOW_LINKS: automatically follow symbolic 
  283.  * links and retrieve the properties of their target (recommended)
  284.  * @GNOME_VFS_FILE_INFO_GET_ACCESS_RIGHTS: tries to get data similar 
  285.  * to what would return access(2) on a local file system (ie is the 
  286.  * file readable, writable and/or executable). Can be really slow on 
  287.  * remote file systems
  288.  *
  289.  * Packed boolean bitfield representing options that can
  290.  * be passed into a gnome_vfs_get_file_info() call (or other
  291.  * related calls that return file info) and affect the operation
  292.  * of get_file_info.
  293.  **/
  294.  
  295. typedef enum {
  296.     GNOME_VFS_FILE_INFO_DEFAULT = 0,
  297.     GNOME_VFS_FILE_INFO_GET_MIME_TYPE = 1 << 0,
  298.     GNOME_VFS_FILE_INFO_FORCE_FAST_MIME_TYPE = 1 << 1,
  299.     GNOME_VFS_FILE_INFO_FORCE_SLOW_MIME_TYPE = 1 << 2,
  300.     GNOME_VFS_FILE_INFO_FOLLOW_LINKS = 1 << 3,
  301.     GNOME_VFS_FILE_INFO_GET_ACCESS_RIGHTS = 1 << 4
  302. } GnomeVFSFileInfoOptions;
  303.  
  304. /**
  305.  * GnomeVFSSetFileInfoMask:
  306.  * @GNOME_VFS_SET_FILE_INFO_NONE: don't set any file info fields
  307.  * @GNOME_VFS_SET_FILE_INFO_NAME: change the name
  308.  * @GNOME_VFS_SET_FILE_INFO_PERMISSIONS: change the permissions
  309.  * @GNOME_VFS_SET_FILE_INFO_OWNER: change the file's owner
  310.  * @GNOME_VFS_SET_FILE_INFO_TIME: change the file's time stamp(s)
  311.  *
  312.  * Packed boolean bitfield representing the aspects of the file
  313.  * to be changed in a gnome_vfs_set_file_info() call.
  314.  **/
  315.  
  316. typedef enum {
  317.     GNOME_VFS_SET_FILE_INFO_NONE = 0,
  318.     GNOME_VFS_SET_FILE_INFO_NAME = 1 << 0,
  319.     GNOME_VFS_SET_FILE_INFO_PERMISSIONS = 1 << 1,
  320.     GNOME_VFS_SET_FILE_INFO_OWNER = 1 << 2,
  321.     GNOME_VFS_SET_FILE_INFO_TIME = 1 << 3
  322. } GnomeVFSSetFileInfoMask;
  323.  
  324.  
  325. struct _GnomeVFSGetFileInfoResult {
  326.     GnomeVFSURI *uri;
  327.     GnomeVFSResult result;
  328.     GnomeVFSFileInfo *file_info;
  329. };
  330.  
  331. typedef struct _GnomeVFSGetFileInfoResult GnomeVFSGetFileInfoResult;
  332.  
  333. GType                      gnome_vfs_get_file_info_result_get_type (void);
  334. GnomeVFSGetFileInfoResult* gnome_vfs_get_file_info_result_dup  (GnomeVFSGetFileInfoResult *result);
  335. void                       gnome_vfs_get_file_info_result_free (GnomeVFSGetFileInfoResult *result);
  336.  
  337. /**
  338.  * GNOME_VFS_FILE_INFO_SYMLINK:
  339.  * @info: GnomeVFSFileInfo struct
  340.  *
  341.  * Determines whether a file is a symbolic link given @info.
  342.  */
  343. #define GNOME_VFS_FILE_INFO_SYMLINK(info)        \
  344.     ((info)->flags & GNOME_VFS_FILE_FLAGS_SYMLINK)
  345.  
  346. /**
  347.  * GNOME_VFS_FILE_INFO_SET_SYMLINK:
  348.  * @info: GnomeVFSFileInfo struct
  349.  * @value: if %TRUE, @info is set to indicate the file is a symbolic link
  350.  *
  351.  * Set the symbolic link field in @info to @value.
  352.  */
  353. #define GNOME_VFS_FILE_INFO_SET_SYMLINK(info, value)            \
  354.     (value ? ((info)->flags |= GNOME_VFS_FILE_FLAGS_SYMLINK)    \
  355.            : ((info)->flags &= ~GNOME_VFS_FILE_FLAGS_SYMLINK))
  356.  
  357. /**
  358.  * GNOME_VFS_FILE_INFO_LOCAL:
  359.  * @info: GnomeVFSFileInfo struct
  360.  *
  361.  * Determines whether a file is local given @info.
  362.  */
  363. #define GNOME_VFS_FILE_INFO_LOCAL(info)            \
  364.     ((info)->flags & GNOME_VFS_FILE_FLAGS_LOCAL)
  365.  
  366. /**
  367.  * GNOME_VFS_FILE_INFO_SET_LOCAL:
  368.  * @info: GnomeVFSFileInfo struct
  369.  * @value: if %TRUE, @info is set to indicate the file is local
  370.  *
  371.  * Set the "local file" field in @info to @value.
  372.  */
  373. #define GNOME_VFS_FILE_INFO_SET_LOCAL(info, value)            \
  374.     (value ? ((info)->flags |= GNOME_VFS_FILE_FLAGS_LOCAL)        \
  375.            : ((info)->flags &= ~GNOME_VFS_FILE_FLAGS_LOCAL))
  376.  
  377.  
  378. /**
  379.  * GNOME_VFS_FILE_INFO_SUID:
  380.  * @info: GnomeVFSFileInfo struct
  381.  *
  382.  * Determines whether a file belongs to the super user.
  383.  */
  384. #define GNOME_VFS_FILE_INFO_SUID(info)            \
  385.     ((info)->permissions & GNOME_VFS_PERM_SUID)
  386.  
  387. /**
  388.  * GNOME_VFS_FILE_INFO_SGID:
  389.  * @info: GnomeVFSFileInfo struct
  390.  *
  391.  * Determines whether a file belongs to the super user's group.
  392.  */
  393. #define GNOME_VFS_FILE_INFO_SGID(info)            \
  394.     ((info)->permissions & GNOME_VFS_PERM_SGID)
  395.  
  396. /**
  397.  * GNOME_VFS_FILE_INFO_STICKY:
  398.  * @info: GnomeVFSFileInfo struct
  399.  *
  400.  * Determines whether a file has the sticky bit set, given @info
  401.  */
  402. #define GNOME_VFS_FILE_INFO_STICKY(info)        \
  403.     ((info)->permissions & GNOME_VFS_PERM_STICKY)
  404.  
  405. /**
  406.  * GNOME_VFS_FILE_INFO_SET_SUID:
  407.  * @info: GnomeVFSFileInfo struct
  408.  * @value: if %TRUE, @info is set to indicate the file belongs to the super user
  409.  *
  410.  * Set the SUID field in @info to @value.
  411.  */
  412. #define GNOME_VFS_FILE_INFO_SET_SUID(info, value)        \
  413.     (value ? ((info)->permissions |= GNOME_VFS_PERM_SUID)    \
  414.            : ((info)->permissions &= ~GNOME_VFS_PERM_SUID))
  415.  
  416. /**
  417.  * GNOME_VFS_FILE_INFO_SET_SGID:
  418.  * @info: GnomeVFSFileInfo struct
  419.  * @value: if %TRUE, @info is set to indicate the file belongs to the super user's group
  420.  *
  421.  * Set the SGID field in @info to @value.
  422.  */
  423. #define GNOME_VFS_FILE_INFO_SET_SGID(info, value)        \
  424.     (value ? ((info)->permissions |= GNOME_VFS_PERM_SGID)    \
  425.            : ((info)->permissions &= ~GNOME_VFS_PERM_SGID))
  426. /**
  427.  * GNOME_VFS_FILE_INFO_SET_STICKY:
  428.  * @info: GnomeVFSFileInfo struct
  429.  * @value: if %TRUE, @info is set to indicate the file has the sticky bit set
  430.  *
  431.  * Set the sticky bit in @info to @value.
  432.  */
  433. #define GNOME_VFS_FILE_INFO_SET_STICKY(info, value)            \
  434.     (value ? ((info)->permissions |= GNOME_VFS_PERM_STICKY)        \
  435.            : ((info)->permissions &= ~GNOME_VFS_PERM_STICKY))
  436.  
  437.  
  438.  
  439. GType             gnome_vfs_file_info_get_type      (void);
  440.  
  441. GnomeVFSFileInfo *gnome_vfs_file_info_new           (void);
  442. void              gnome_vfs_file_info_unref         (GnomeVFSFileInfo       *info);
  443. void              gnome_vfs_file_info_ref           (GnomeVFSFileInfo       *info);
  444. void              gnome_vfs_file_info_clear         (GnomeVFSFileInfo       *info);
  445. const char *      gnome_vfs_file_info_get_mime_type (GnomeVFSFileInfo       *info);
  446. void              gnome_vfs_file_info_copy          (GnomeVFSFileInfo       *dest,
  447.                              const GnomeVFSFileInfo *src);
  448. GnomeVFSFileInfo *gnome_vfs_file_info_dup           (const GnomeVFSFileInfo *orig);
  449. gboolean          gnome_vfs_file_info_matches       (const GnomeVFSFileInfo *a,
  450.                              const GnomeVFSFileInfo *b);
  451. GList *           gnome_vfs_file_info_list_ref      (GList                  *list);
  452. GList *           gnome_vfs_file_info_list_unref    (GList                  *list);
  453. GList *           gnome_vfs_file_info_list_copy     (GList                  *list);
  454. void              gnome_vfs_file_info_list_free     (GList                  *list);
  455.  
  456. G_END_DECLS
  457.  
  458. #endif /* GNOME_VFS_FILE_INFO_H */
  459.